//
//  IconfontDemoTests.m
//  IconfontDemoTests
//
//  Created by ZJ on 2018/7/20.
//  Copyright © 2018年 iCatch Technology Inc. All rights reserved.
//

#import <XCTest/XCTest.h>

@interface IconfontDemoTests : XCTestCase

@end

@implementation IconfontDemoTests

/**
 此方法在 XCTestCase 的测试方法调用之前调用，在测试之前创建一些在 test case方法中需要用到的一些全局对象
 */
- (void)setUp {
    [super setUp];
    // Put setup code here. This method is called before the invocation of each test method in the class.
}

/**
 当测试全部结束之后调用，该方法执行结束之后清除测试现场，释放资源、删除不用的对象等
 */
- (void)tearDown {
    // Put teardown code here. This method is called after the invocation of each test method in the class.
    [super tearDown];
}

/**
 基本功能测试（方法以 test 开头，会进行测试）
 新建一个 test 为前缀的方法即可创建新的测试案例
 */
- (void)testExample {
    // This is an example of a functional test case.
    // Use XCTAssert and related functions to verify your tests produce the correct results.
}

/**
 测试代码执行性能
 */
- (void)testPerformanceExample {
    // This is an example of a performance test case.
    [self measureBlock:^{
        // Put the code you want to measure the time of here.
    }];
}

/********************* XCTest常用基本测试工具 ********************/
/*
 //断言,最基本的测试，如果expression为true则通过，否则打印后面格式化字符串
 XCTAssert(expression, format...)
 
 //Bool测试:
 XCTAssertTrue(expression, format...)
 XCTAssertFalse(expression, format...)
 
 //相等测试
 XCTAssertEqual(expression1, expression2, format...)
 XCTAssertNotEqual(expression1, expression2, format...)
 
 //double float 对比数据测试使用
 XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, format...)
 XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, format...)
 
 //Nil测试，XCTAssert[Not]Nil断言判断给定的表达式值是否为nil
 XCTAssertNil(expression, format...)
 XCTAssertNotNil(expression, format...)
 
 //失败断言
 XCTFail(format...)
*/

/*************************** 异步测试 *******************************/
/*
 //异步测试（期望测试）
- (void)testExpectation {
    //声明一个期望
    XCTestExpectation *exp = [self expectationWithDescription:@"这里写入操作出错的原因描述。。。"];
    //添加一个新线程
    NSOperationQueue *queue = [[NSOperationQueue alloc]init];
    [queue addOperationWithBlock:^{
        //模拟这个异步操作需要2秒后才能获取结果，比如一个异步网络请求
        sleep(2);
        //模拟获取的异步操作后，获取结果，判断异步方法的结果是否正确
        XCTAssertEqual(_condition1, _condition2,@"返回结果又问题");
        //如果断言没问题，就调用fulfill宣布测试满足期望
        //注：如果你申明了多个期望，每个都需要fulfill
        [exp fulfill];
    }];
    
    //延迟捕获，3秒后未获得满足的期望，会报错。这里修改为"1"就会报错
    [self waitForExpectationsWithTimeout:3 handler:^(NSError * _Nullable error) {
        if (error) {
            NSLog(@"Timeout Error: %@", error);
        }
    }];
}
*/

@end
